﻿#include <iostream>
using namespace std;
//
//class A
//{
//public:
//	virtual void Func_A()
//	{
//		//...
//	}
//};
//
//class B
//{
//public:
//	virtual void Func_B()
//	{
//		//..
//	}
//};
//
//class C : public A, public B
//{
//	virtual void Func_A()
//	{
//		//...
//	}
//
//	virtual void Func_B()
//	{
//		//..
//	}
//
//	virtual void Func_C()
//	{
//		//..
//	}
//};
//
//int main()
//{
//	C c;
//	return 0;
//}


//class Base
//{
//public:
//	// 虚函数
//	virtual void Func()
//	{
//		//...
//	}
//};

// 买票举例
//写法一：
//class Person
//{
//public:
//	virtual void Buy_Ticket()
//	{
//		cout << "买票-原价" << endl;
//	}
//	void Test()
//	{
//		Buy_Ticket();
//	}
//};
//
//class Student : public Person
//{
//public:
//	virtual void Buy_Ticket()
//	{
//		cout << "买票-打折" << endl;
//	}
//};
//
//int main()
//{
//	Person* p = new Student;
//	p->Test();
//	delete p;
//	return 0;
//}

//// 写法二：
//class Person
//{
//public:
//	virtual void Buy_Ticket()
//	{
//		cout << "买票-原价" << endl;
//	}
//};
//
//class Student : public Person
//{
//public:
//	virtual void Buy_Ticket()
//	{
//		cout << "买票-打折" << endl;
//	}
//};
//
//void Test(Person* p)
//{
//	p->Buy_Ticket();
//}
//
//int main()
//{
//	Person* p = new Student;
//	Test(p);
//	delete p;
//	return 0;
//}

//class A
//{
//public:
//	virtual ~A()
//	{
//		cout << "~A()" << endl;
//	}
//};
//
//class B : public A
//{
//public:
//	virtual ~B()
//	{
//		cout << "~B()->delete" << _p << endl;
//	}
//protected:
//	int* _p = new int[10];
//};
//
//int main()
//{
//	A* p1 = new A;
//	A* p2 = new B;
//	delete p1;
//	delete p2;
//	return 0;
//}

//class A
//{
//public:
//	 void Print() override
//	{
//		cout << endl;
//	}
//};
//
//class B : public A
//{
//public:
//	 void Print()
//	{
//		cout << "" << endl;
//	}
//};

//// 纯虚函数和抽象类
//class Pumping_paper
//{
//public:
//	virtual void using_feel() = 0;
//	void Test()
//	{
//		using_feel();
//	}
//};
//
//class ManHua : public Pumping_paper
//{
//public:
//	 void using_feel() 
//	{
//		cout << "蓬松" << endl;
//	}
//};
//
//class QingFeng : public Pumping_paper
//{
//public:
//	 void using_feel() 
//	{
//		cout << "柔软" << endl;
//	}
//};
//
//int main()
//{
//	Pumping_paper* p1 = new ManHua;
//	Pumping_paper* p2 = new QingFeng;
//	p1->Test();
//	p2->Test();
//	delete p1;
//	delete p2;
//	return 0;
//}

///*下⾯编译为32位程序的运⾏结果是什么（）
//A.编译报错  B.运⾏报错  C.8  D.12*/
//class A
//{
//public:
//	virtual void Func()
//	{
//		//...
//	}
//protected:
//	int _a = 1;
//	char _b;
//};
//
//int main()
//{
//	A a1;
//	cout << sizeof(a1) << endl;
//	return 0;
//}

//class Person
//{
//public:
//	virtual void Print()
//	{
//		cout << "全价" << endl;
//	}
//
//	virtual void Func()
//	{
//		//...
//	}
//
//	void Test()
//	{
//		Print();
//	}
//
//protected:
//	string _name = "欧阳";
//};
//
//class Student : public Person
//{
//public:
//	virtual void Print()
//	{
//		cout << "打折" << endl;
//	}
//	virtual void Func_S()
//	{
//		//...
//	}
//protected:
//	int _id = 1;
//};
//
//class Child : public Person
//{
//public:
//	virtual void Print()
//	{
//		cout << "免费" << endl;
//	}
//protected:
//	int _age = 6;
//};
//
//int main()
//{
//	Person* p1 = new Person;
//	Person* p2 = new Student;
//	Person* p3= new Child;
//
//	p1->Test();
//	p2->Test();
//	p3->Test();
//
//	delete p1;
//	delete p2;
//	return 0;
//}